/**
 * 函数迭代可选参数算法（Arguments Optional）创建一个计算两个参数之和的 function。如果只有一个参数，则返回一个
 * function，该 function 请求一个参数然后返回求和的结果。
 * 例如，add(2, 3) 应该返回 5，而 add(2) 应该返回一个 function。
 * 调用这个有一个参数的返回的 function，返回求和的结果：
 * var sumTwoAnd = add(2);
 * sumTwoAnd(3) 返回 5。
 * 如果两个参数都不是有效的数字，则返回 undefined。
 */

/*思路：这个其实就是call()方法。jquery的链式操作就是这样实现的。
函数链式操作原理：返回函数本身。当然也可以返回一个别的函数。
function show(str){
    alert(str);
    return show;//关键
}
show('abc')('bcd')；
上述代码将弹出两个框，abc，和bcd。只要你想，可以无限地写下去。
你可以返回一个函数，那么下次操作时，得到的就是这个函数。*/
function add(x) {
    if (arguments.length === 1 && typeof x === "number") {
        return function (y) {
            if (typeof y === "number"){
                return x + y;
            }
        };
    }else {
        if (typeof x !== "number"|| typeof arguments[1] !== "number") {
            return undefined;
        }
        return arguments[0] + arguments[1];
    }
}
add(2,3);
